package com.rabbit.eap.system.service;

import com.rabbit.eap.framework.common.api.ApiResult;
import com.rabbit.eap.framework.common.service.BaseService;
import com.rabbit.eap.system.dto.SysRoleDTO;
import com.rabbit.eap.system.entity.SysRole;
import com.rabbit.eap.system.param.SysRolePageParam;

import java.util.List;
import java.util.Set;

/**
 * @projectName: eap
 * @packageName: com.rabbit.eap.system.service
 * @className: ISysRoleService
 * @author： rabbit
 * @version： 1.0
 * @since： 2020/06/06 23:34:03
 * <p>Description:
 * 角色信息表 服务类
 * </p>

 */
public interface ISysRoleService extends BaseService<SysRole> {


    /**
     * @Description: 添加角色信息表
     * @methodName: saveSysRole
     * @param sysRoleDTO:sysRoleDTO数据传输对象
     * @return: ApiResult
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult saveSysRole(SysRoleDTO sysRoleDTO) throws Exception;


    /**
     * @Description: 修改角色信息表
     * @methodName: modifySysRole
     * @param  sysRoleDTO:sysRoleDTO数据传输对象
     * @return: ApiResult
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult modifySysRole(SysRoleDTO sysRoleDTO) throws Exception;

    /**
     * @Description: 删除角色信息表
     * @methodName: removeSysRole
     * @param roleId:角色id
     * @return: ApiResult.result(flag)
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult removeSysRole(Long roleId) throws Exception;

    /**
     * @Description: 根据Id获取角色信息表详情
     * @methodName: getSysRoleInfo
     * @param id: id
     * @return:  SysRoleVO
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult getSysRoleById(Long id) throws Exception;

    /**
     * @Description: 角色信息表分页列表
     * @methodName: getSysRolePageList
     * @param sysRolePageParam
     * @return: Paging<SysRoleVO>
     * @throws Exception
     * @date: 2020/06/06 23:34:03
     * @author: rabbit
     */
    ApiResult getSysRolePageList(SysRolePageParam sysRolePageParam) throws Exception;

    /**
     * @Description  根据用户ID查询角色
     * @methodName: selectRolePermissionByUserId
     * @param userId: 用户ID
     * @return: java.util.Set<java.lang.String> 权限列表
     * @date: 2020/5/31 22:06
     * @author: rabbit
     *
     */
    Set<String> selectRolePermissionByUserId(Long userId);

    /**
     * @Description 根据用户ID查询权限
     * @methodName: selectMenuPermsByUserId
     * @param userId: 用户ID
     * @return: java.util.Set<java.lang.String> 权限列表
     * @date: 2020/5/31 22:09
     * @author: rabbit
     *
     */
    Set<String> selectMenuPermsByUserId(Long userId);

    /**
     * @Description: 根据用户获取角色
     * @methodName: getRoles
     * @param userId: 用户Id
     * @return: java.util.List<com.rabbit.eap.system.entity.SysRole>
     * @date: 2020/6/29 21:30
     * @author: rabbit
     *
     */
    List<SysRole> getRoles(Long userId);

    ApiResult modifySysRoleStatus(SysRoleDTO sysRoleDTO);

    ApiResult getSysRoleSelect();

    ApiResult authDataScope(SysRole sysRole);

    ApiResult authRoleMenu(SysRole sysRole);

    ApiResult getRoleList();
}
